import { IPSWFProcess } from './ipswfprocess';
import { IPSWFProcessRole } from './ipswfprocess-role';

/**
 *
 * 继承父接口类型值[INTERACTIVE]
 * @export
 * @interface IPSWFInteractiveProcess
 */
export interface IPSWFInteractiveProcess extends IPSWFProcess {
  getEditFields(): string[] | null;

  get editFields(): string[] | null;

  /**
   * 编辑模式
   * @description 值模式 [流程处理编辑模式] {0：不支持、 1：支持（排除指定属性）、 2：支持（仅指定属性） }
   * @type {( number | 0 | 1 | 2)}
   * @default 0
   */
  editMode: number | 0 | 1 | 2;

  /**
   * 操作表单标记
   * @type {string}
   */
  formCodeName: string;

  /**
   * 处理意见字段
   * @type {string}
   */
  memoField: string;

  /**
   * 移动端操作表单标记
   * @type {string}
   */
  mobFormCodeName: string;

  /**
   * 移动端附加界面行为组标记
   * @type {string}
   */
  mobUAGroupCodeName: string;

  /**
   * 移动端功能2操作表单标记
   * @type {string}
   */
  mobUtil2FormCodeName: string;

  /**
   * 移动端功能2操作表单名称
   * @type {string}
   */
  mobUtil2FormName: string;

  /**
   * 移动端功能3操作表单标记
   * @type {string}
   */
  mobUtil3FormCodeName: string;

  /**
   * 移动端功能3操作表单名称
   * @type {string}
   */
  mobUtil3FormName: string;

  /**
   * 移动端功能4操作表单标记
   * @type {string}
   */
  mobUtil4FormCodeName: string;

  /**
   * 移动端功能4操作表单名称
   * @type {string}
   */
  mobUtil4FormName: string;

  /**
   * 移动端功能5操作表单标记
   * @type {string}
   */
  mobUtil5FormCodeName: string;

  /**
   * 移动端功能5操作表单名称
   * @type {string}
   */
  mobUtil5FormName: string;

  /**
   * 移动端功能操作表单标记
   * @type {string}
   */
  mobUtilFormCodeName: string;

  /**
   * 移动端功能操作表单名称
   * @type {string}
   */
  mobUtilFormName: string;

  /**
   * 发送通知类型
   * @description 值模式 [流程处理通知消息类型] {1：系统消息、 2：电子邮件、 4：手机短信、 8：MSN消息、 16：检务通消息、 32：微信、 64：钉钉、 128：企业微信、 256：用户自定义、 512：用户自定义2 }
   * @type {( number | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512)}
   */
  msgType: number | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512;

  /**
   * 多实例模式
   * @description 值模式 [流程处理多实例模式] {NONE：无、 PARALLEL：并行多实例、 SEQUENTIAL：串行多实例 }
   * @type {( string | 'NONE' | 'PARALLEL' | 'SEQUENTIAL')}
   */
  multiInstMode: string | 'NONE' | 'PARALLEL' | 'SEQUENTIAL';

  /**
   * 交互处理角色集合
   *
   * @type {IPSWFProcessRole[]}
   */
  getPSWFProcessRoles(): IPSWFProcessRole[] | null;

  /**
   * 交互处理角色集合
   *
   * @type {IPSWFProcessRole[]}
   */
  get psWFProcessRoles(): IPSWFProcessRole[] | null;

  findPSWFProcessRole(objKey: any): IPSWFProcessRole | null;

  getPredefinedActions(): string[] | null;

  get predefinedActions(): string[] | null;

  /**
   * 附加界面行为组标记
   * @type {string}
   */
  uAGroupCodeName: string;

  /**
   * 功能2操作表单标记
   * @type {string}
   */
  util2FormCodeName: string;

  /**
   * 功能2操作表单名称
   * @type {string}
   */
  util2FormName: string;

  /**
   * 功能3操作表单标记
   * @type {string}
   */
  util3FormCodeName: string;

  /**
   * 功能3操作表单名称
   * @type {string}
   */
  util3FormName: string;

  /**
   * 功能4操作表单标记
   * @type {string}
   */
  util4FormCodeName: string;

  /**
   * 功能4操作表单名称
   * @type {string}
   */
  util4FormName: string;

  /**
   * 功能5操作表单标记
   * @type {string}
   */
  util5FormCodeName: string;

  /**
   * 功能5操作表单名称
   * @type {string}
   */
  util5FormName: string;

  /**
   * 功能操作表单标记
   * @type {string}
   */
  utilFormCodeName: string;

  /**
   * 功能操作表单名称
   * @type {string}
   */
  utilFormName: string;

  /**
   * 支持编辑
   * @type {boolean}
   * @default false
   */
  editable: boolean;

  /**
   * 发送通知
   * @type {boolean}
   */
  sendInform: boolean;
}
